<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <h1>实例对象与函数对象</h1>

    <script>
        //实例对象与函数对象

        function demo(){

        }
        // 1. 函数对象
        // 将上面的函数demo作为对象使用
        // 可以添加属性和方法
        demo.m = 100;
        demo.fn = function(){
            console.log("Hello");
        }
        // 可以调用属性和方法
        console.log(demo.m);
        demo.fn();
        // 为什么函数可以作为对象使用？因为函数的定义方式：
        // 具名函数： function 函数名(){}
        // 匿名函数： const 变量名 = function(){ }
        // 使用new Function来创建函数，那就是函数也是一个对象

        console.dir(demo);

        // 2. 实例对象 
        // 将demo函数作为构造函数，通过new(实例化)来参数一个对象
        const d = new demo(); // 此处的d为demo的实例对象
        d.n = 200;
        d.info = function(){
            console.log("World!");
        }
        console.log(d.n);
        d.info();
    </script>
</body>
</html>